<?php
namespace app\home\controller;

use think\Controller;
use think\Session;
use think\Db;

class CheckSms extends Controller
{
	protected $phone;	
	protected $type;	
	protected $code;
	protected $account = '';
	protected $pwd = '';
	protected $sign = '';

/*
关于验证码的验证
发送的时候：1，更新所有验证码为已使用
			2，限制1分钟内同类型验证码只能发一条
			3, 完成后数据库存入数据。

验证时：1，验证验证码存在
		2，同类型验证码符合
		3，是否超时
		4，成功后失效
		5, 是否验证			


*/
	public function CreateTable()
	{
		Db::execute("DROP TABLE IF EXISTS `sms`;
CREATE TABLE `sms` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `phone` varchar(255) NOT NULL COMMENT '手机号',
  `time` int(11) unsigned NOT NULL,
  `code` int(11) unsigned DEFAULT NULL COMMENT '验证码',
  `uid` int(11) unsigned DEFAULT NULL COMMENT '用户id',
  `type` varchar(255) DEFAULT NULL COMMENT '类型 1=>注册  2=>忘记密码  3=>修改登录密码   4=>修改设置支付密码  5=>更换绑定手机号码 6=>交易获取验证码',
  `status` tinyint(2) unsigned DEFAULT '0' COMMENT '0=>未使用  1=>已使用 2=>已过期',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8 COMMENT='发送短信';");
	}		

	public function check($phone,$code,$type)
	{
		if ($code != db('sms')->where(['phone' => $phone, 'status' => 0, 'type' => $type])->value('code')) {
            return json(['status' => -1, 'message' => '驗證碼錯誤']);
        }
        db('sms')->where(['phone' => $phone, 'status' => 0])->update(['status' => 1]);
	}

	#发送验证码
    public function code()
    {
        if(empty(input('phone'))){
            return json(['status'=>-1,'message'=>'手机号不能为空']);
        }
//        type = 1:注册，type=2：忘记
        $type = (int)input('type')?:1;
        $phone = input('phone');
        if($phone == '18000000000'){
            return json(['status'=>200,'message'=>'發送成功']);
        }
        $res = db('users')->where(['phone'=>$phone])->find();
        switch ($type) {
            case 1:
                if($res)return json(['status'=>-1,'message'=>'手機號已被註冊']);
                break;
            case 2:
                if(!$res)return json(['status'=>-1,'message'=>'該手機號未註冊']);
                break;
            case 3:
                if(!$res)return json(['status'=>-1,'message'=>'該手機號未註冊']);
                break;
            case 4:
                if(!$res)return json(['status'=>-1,'message'=>'該手機號未註冊']);
                break;
            case 5:
                if(!$res)return json(['status'=>-1,'message'=>'該手機號未註冊']);
                break;
            case 7:
                if(!$res)return json(['status'=>-1,'message'=>'該手機號未註冊']);
                break;
            case 6:
                $res1 = db('users')->where(['phone'=>input('two_phone')])->find();
                if(!$res)return json(['status'=>-1,'message'=>'該手機號未註冊']);
                if($res1)return json(['status'=>-1,'message'=>'手機號已被註冊']);
                break;
        }

        $result = NewSms($phone,$type);
        if($result['data'] > 0){
            return json(['status'=>200,'message'=>'發送成功']);
        }else{
            return json(['status'=>-1,'message'=>'發送失敗']);
        }
    }

	/**
	 * @param $Mobile
	 * @return array
	 * @auther mapengcheng
	 */
	function NewSms($Mobile, $type = 1)
	{
	    // return false;
	    db('sms')->where('phone', $Mobile)->update(['status' => 2]);
	    $str     = "1234567890123456789012345678901234567890";
	    $str     = str_shuffle($str);
	    $code    = substr($str, 3, 6);
	    $data    = "username=%s&password=%s&mobile=%s&content=%s";
	    $url     = "http://120.55.248.18/smsSend.do?";
	    $name    = $this->account;
		$pwds	 = md5($this->pwd);
	    $pass    = md5($name . $pwds);
	    $to      = $Mobile;
	    //1:注册 2:忘记密码 3:提现验证码  4:修改登录密码 5:修改交易密码  6:修改手机号

	    /*
	您的注册验证码是***，请在10分钟内填写，为保障您的账户安全，切勿将验证码泄露给他人！【时尚链】
	您本次操作的验证码是***，请在10分钟内填写，为保障您的账户安全，切勿将验证码泄露给他人！【时尚链】
	您的提现验证码是***，请在10分钟内填写，为保障您的账户安全，切勿将验证码泄露给他人！【时尚链】
	您的修改验证码是***，请在10分钟内填写，为保障您的账户安全，切勿将验证码泄露给他人！【时尚链】
	    */
	    switch ($type) {
	        case 1:
	            $content = "您的注册验证码是" . $code . "，请在10分钟内填写，为保障您的账户安全，切勿将验证码泄露给他人！【时尚链】";
	            break;
	        case 2:
	            $content = "您的修改验证码是" . $code . "，请在10分钟内填写，为保障您的账户安全，切勿将验证码泄露给他人！【时尚链】";
	            break;
	        case 3:
	            $content = "您的提现验证码是" . $code . "，请在10分钟内填写，为保障您的账户安全，切勿将验证码泄露给他人！【时尚链】";
	            break;
	        case 4:
	            $content = "您的修改验证码是" . $code . "，请在10分钟内填写，为保障您的账户安全，切勿将验证码泄露给他人！【时尚链】";
	            break;
	        case 5:
	            $content = "您的修改验证码是" . $code . "，请在10分钟内填写，为保障您的账户安全，切勿将验证码泄露给他人！【时尚链】";
	            break;
	        case 6:
	            $content = "您的修改验证码是" . $code . "，请在10分钟内填写，为保障您的账户安全，切勿将验证码泄露给他人！【时尚链】";
	            break;
	        case 7:
	            $content = "您本次操作的验证码是" . $code . "，请在10分钟内填写，为保障您的账户安全，切勿将验证码泄露给他人！【时尚链】";
	            break;
	        
	        default:
	            return false;
	            break;
	    }
	    
	    $content = urlencode($content);
	    $rdata   = sprintf($data, $name, $pass, $to, $content);
	    db('sms')->insert(['phone' => $to,'time'=>time(), 'code' => $code, 'type' => $type]);
	    $ch = curl_init();
	    curl_setopt($ch, CURLOPT_POST, 1);
	    curl_setopt($ch, CURLOPT_POSTFIELDS, $rdata);
	    curl_setopt($ch, CURLOPT_URL, $url);
	    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	    $result = curl_exec($ch);
	    curl_close($ch);
	    return ['code' => $code, 'data' => $result, 'msg' => ''];
	}



}